//***********************************************************************
//	File:		Striker.h
//	Author:		
//	Course:		SGP 1405
//	Purpose:	
//***********************************************************************
//***********************************************************************
//	Purposfully left blank for all comments regarding this file 
//	
//	
//	
//***********************************************************************



#pragma once
#include "Enemy.h"
class Striker :
	public Enemy
{
public:
	Striker(float posX = -1, float posY = -1);
	~Striker() = default;
	Striker(Striker&) = default; 
	Striker& operator =(Striker&) = default; 

	//Type
	int GetType() const { return ENT_STRIKER; }

	//Interface
	void Update(float dt);
	void Render();
	void HandleCollision(const IEntity* pOther);
	void HandleEvent();
	SGD::Rectangle GetRect() const;
	void ModifyHealth(float hpAmount);
	void ApplyFriction(float dt);

	void Attack(float dt);
	void Move(void);

	// Striker Specific
	void Blink();

	//Accessors
	float GetDamage				(void)				{ return m_fDamage; }
	float GetAttackCDL			(void)				{ return m_fAttackCDL; }
	float GetBlinkDistance		(void)				{ return m_fBlinkDistance; }
	float GetBlinkCDL			(void)				{ return m_fBlinkCDL; }
	float GetBlinkTimer			(void)				{ return m_fBlinkTimer; }

	//Mutators
	void SetDamage				(float dam)			{ m_fDamage = dam; }
	void SetAttackCDL			(float aCDL)		{ m_fAttackCDL = aCDL; }
	void SetBlinkDistance		(float bd)			{ m_fBlinkDistance = bd; }
	void SetBlinkCDL			(float bCDL)		{ m_fBlinkCDL = bCDL; }
	void SetBlinkTimer			(float bt)			{ m_fBlinkTimer = bt; }

private:
	float m_fDamage = 0.0f;
	float m_fAttackCDL = 0.0f;
	float m_fBlinkDistance = 0.0f;
	float m_fBlinkCDL = 0.0f;
	float m_fBlinkTimer = 0.0f; 
	Entity* pTarget;
	float m_fTotalHP = 20.0f;
	bool m_bMove = false;

};

